package todo;

import interfaces.Task;

import java.util.Date;
import java.util.LinkedList;

import contacts.Person;

/**
 * Klasse implementierung des TaskInterface Klasse repräsentiert eine Aufgabe
 * 
 * @author Michi
 * 
 */
public class MyTask implements Task {

	/**
	 * Member data
	 */
	String name;
	Date enddate;
	LinkedList<Person> participants;
	int priority;
	String description;
	int id;
	int todoid;
	Boolean done;

	/**
	 * Konstruktor - hier können alle Werte direkt übergeben werden
	 * 
	 * @param name
	 *            Name der Aufgabe
	 * @param enddate
	 *            Ablaufdatum der Aufgabe
	 * @param participants
	 *            Teilnehmer der Aufgabe
	 * @param priority
	 *            Priorität der Aufgabe
	 * @param description
	 *            BEschreiben bzw. Nozizen der Aufgabe
	 * @param id
	 *            ID der Aufgabe
	 */
	public MyTask(String name, Date enddate, LinkedList<Person> participants,
			int priority, String description, int id, boolean done) {

		this.name = name;
		this.enddate = enddate;
		this.participants = participants;
		this.priority = priority;
		this.description = description;
		this.id = id;
		this.done = done;
	}

	/**
	 * Konstruktor
	 * 
	 * @param name
	 *            Name der Aufgabe
	 * @param enddate
	 *            Ende der AUfgabe
	 * @param priority
	 *            Priorität
	 * @param description
	 *            Beschreibung
	 * @param id
	 *            ID des Kalenders
	 * @param todoid
	 *            ID der AUfgabe
	 */
	public MyTask(String name, Date enddate, int priority, String description,
			int id, int todoid) {

		this.name = name;
		this.enddate = enddate;
		this.priority = priority;
		this.description = description;
		this.id = id;
		this.todoid = todoid;

	}

	/**
	 * Konstruktor 2 - hier werden Name, Enddatum und ID übergeben
	 * 
	 * @param name
	 *            Name der Aufgabe
	 * @param enddate
	 *            Ablaufdatum der Aufgabe
	 * @param id
	 *            ID der Aufgabe
	 */
	public MyTask(String name, Date enddate, int id) {
		this.name = name;
		this.enddate = enddate;
		this.id = id;
		this.participants = new LinkedList<Person>();

	}

	/**
	 * Konstruktor 3 - hier werden die Minimalanforderungen uebergeben
	 * 
	 * @param name
	 * @param enddate
	 */
	public MyTask(String name, Date enddate) {
		this.name = name;
		this.enddate = enddate;
	}

	// Getter & Setter Bereich
	public int getId() {
		return id;
	}

	public int getTodoid() {
		return todoid;
	}

	public void setTodoid(int todoid) {
		this.todoid = todoid;
	}

	public boolean getDone() {
		return done;
	}

	public void setDone(boolean done) {
		this.done = done;
	}

	public void setId(int id) {
		this.id = id;
	}

	@Override
	public String getName() {

		return name;
	}

	@Override
	public Date getEnddate() {

		return enddate;
	}

	@Override
	public LinkedList<Person> getParticipants() {

		return participants;
	}

	public void addParticipant(Person person) {
		participants.add(person);
	}

	@Override
	public int getPriority() {

		return priority;
	}

	@Override
	public String getDescription() {

		return description;
	}

	@Override
	public void setName(String name) {
		this.name = name;

	}

	@Override
	public void setEnddate(Date date) {
		this.enddate = date;

	}

	@Override
	public void setParticipants(LinkedList<Person> participants) {
		this.participants = participants;

	}

	@Override
	public void setPriority(int prior) {
		this.priority = prior;
	}

	@Override
	public void setDescription(String description) {
		this.description = description;

	}

	/**
	 * Gibt Inhalte der Aufgabe als String zurück
	 */
	public String toString() {
		String out = name + "\n" + "Bis: " + enddate + "\n" + "Teilnehmer: ";

		if (!participants.isEmpty()) {

			for (int i = 0; i < participants.size(); i++) {
				if (i == participants.size() - 1) {
					out = out + participants.get(i).getName();
				} else {
					out = out + participants.get(i).getName() + ", ";
				}

			}

		}

		out = out + "\n" + "Prioritaet: " + priority + "\n" + "Beschreibung: "
				+ description;

		return out;
	}

	public String toStringShort() {
		String out = name;

		return out;
	}

	@SuppressWarnings({ "unused", "deprecation" })
	public String weekToString() {
		String str = "";
		String endHours = "";
		String endMinutes = "";

		endHours = getEnddate().getHours() + "";

		if (getEnddate().getMinutes() < 10) {
			endMinutes = "0" + getEnddate().getMinutes();
		} else {
			endMinutes = getEnddate().getMinutes() + "";
		}

		str = "<html><head></head><body style=\"background-color:rgb(205, 205, 193)\">"
				+ name + "<br />" + "</html>";

		return str;
	}

}
